home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 October / SAN CD 10-2007 CD-ROM 29.iso / pc / Software / KeithsImageStacker / KIS / Version History < prev   
Encoding:
Text File  |  2004-04-01  |  52.1 KB  |  332 lines

  1. Version History
  2.  
  3. 4.2
  4. 040401
  5. Bug Fixes:
  6. -- In the Unsharp Mask and Laplacian Sharpening Interfaces, if you attempted to redefine a the preview bounds but released the mouse button without dragging a rectangle, this could cause subsequent crashes later on.  Should be fixed.
  7. -- v4.1 introduced a bug into the Open FITS file interface, in which each channel opened would erase any existing channels in the stack.  This made it impossible to recover an RGB stack from three FITS files.  The problem has been solved.
  8. -- The sliders in the Power Spectrum Sorting Interface were being memory leaked.  Fixed.
  9. -- Fixed a bug that could cause a crash when the Clips Window is closed.
  10. -- Centroid alignment wasn't using the proper algorithm to determine a pixel's overall value (using average instead of max of RGB components).  Fixed.
  11. -- Preview bounds for a variety of operations were not properly displayed in the FrameStack window if the FrameStack window size did not perfectly match that actual FrameStack's size.  Should be fixed.
  12. -- The Laplacian Sharpening Interface did not respect the pin-zero and pin-one boxes when creating the final result after hitting the OK button.  This would cause the final result to suddenly change so as to not match the preview that was available immediately before hitting OK.  This is fixed now.
  13. -- The Laplacian Sharpening Interface did not remember the value of the DC term properly after being closed.  Fixed.
  14. -- Half bug, half missing feature in some cases, the Marking Clip Rect (cyan border around a clip) often was not drawn for many operations.  Several occurances of this bug were fixed in v4.1.  Several more are fixed here.
  15. -- Turns out I was calculating 2D power spectrums quite incorrectly.  Sorting by power spectrum will hopefully improve now.
  16. -- A smattering of small changes and fixes to the precise dimensions of power-2 operations bounds rects and methods for getting pixels from GWorlds (inclusion of the right and bottom edges of pixels of a bounds rect primarily)
  17. -- In the Unsharp Masking Interface, if you moved the preview rect, the old preview rect was not restored to the original image.  Fixed.
  18. -- If the RGB channels of the Frame Stack were independently aligned, the single channel views in the Histograms/Levels Interface were not drawn properly.  Fixed (and eliminated now that those checkboxes are gone)
  19. -- If the FrameStack was rebuilt, the RGB alignments on the FrameStack were not reinitialized to (0, 0).  Bug?  Stupid feature?  Either way, they are initialized now.
  20.  
  21. Changes:
  22. -- Added Debayering on the individual clips, for use with cameras that have been "RAW" modded to receive the Bayer pattern directly from the camera's CCD.
  23. -- Decreased the Event reaction time slightly.  This vastly cuts the amount of CPU resources being hogged by the program without noticably affecting the program's performance.
  24. -- When sorting frames by power spectrum distribution, there is now a high frequency cutoff slider in addition to the old low frequency cutoff slider.  The score of a frame will be the ratio of the sum of power between the cutoffs to the sum of total power.  Initial experiments suggest that this can definitely improve the final sorted order of the frames.
  25. -- A few sorting methods have been completely removed because people continue to be confused as to how to properly sort the frames in such a way as to get satisfying results.  At the same time, the sorting menu has been garnished with some textual notes that should prod people in the right direction under most circumstances.
  26. -- Significant changes to centroid alignment.  Centroid alignment is considerably faster than difference alignment, especially when the misalignments are large.  However, it may not produce the optimal alignment (I am unsure about this.  Perhaps it is optimal after all, in which it is definitely superior to the difference method).  Therefore, it is suggested to use centroid alignment (4-key) first and then clean up with a difference alignment using the 3-key.  The 1-key and 2-key difference alignments, despite fixing large misalignments better than the 3-key method, are slower than the centroid method, which is why centroid followed by 3-key is recommended as the best overall approach.
  27. -- Added Cross-Correlation alignment.  It is used in the same fashion as the existing four methods of alignment, three for difference and one for centroid.  Simply hold down the '5' key and click on a clip or a selection of clips to use it.  You must, however, use a power-of-two Operations Bound rect.  Otherwise the program simply beeps.  While this method usually works pretty well, it sometimes gets confused and produces a completely ridiculous alignment.  Additionally, it is noticeably slower than the other alignment methods.  Frankly, I think the centroid method is best for macro-alignments and the key-3 difference method is best for micro-alignments.
  28. -- Added a new operation on the FrameStack called Fourier Transform Editor.  This allows you to literally paint out those parts of the Fourier transform of the stack that correspond to periodic interference patterns, such as the "herring bone" pattern that pervades many long exposure modified webcams.  Aligning with a brightness threshold (which deals with the same problem in some cases) is still crucial, since it provides an optimal and sharp alignment, but if the final stack is not deep enough, it can still exhibit these kinds of interference patterns.  This tool will virtually eliminate them.  I would guess that it should also help in mitigating Bayer pattern effects, although I have not experimented with this yet.
  29. -- The centroid alignment wasn't using the brightness threshold before.  Only the difference alignment was.  Now centroid alignment uses it too, as does the new cross correlation alignment (although it may introduce unnatural edges into the image which could mess up the cross correlation alignment).
  30. -- Added a new checkbox to the Open Movie Interface that lets you specify that frames should be aligned on the fly as they are brought into the workspace.  Not only does this allow you to align at the time of opening the file (which doesn't really save any time if you think about it), but it allows you to specify a bounds rect in the Open Movie Interface that only needs to fit around the object in the first frame, not the full drifted area of the object in all frames.  This will save memory of course.  Likewise this prevents the object from drifting outside the specified rect and being clipped by accident if you didn't make the original rect big enough in the first frame.
  31. -- Added four menu commands to the View menu for viewing the RGB channels of the FrameStack individually.  Note that the 1, 2, and 3 command key menu equivalents have been reassigned in accordance with this change.  These menu commands work even when the various operations dialogs are open.  Note, however, that the channel appearances interact with the preview rects in some strange ways.  I am still working on designing the best possible interface and interaction for all the possible combinations of settings.
  32. -- Removed the recently added channel checkboxes in the Histogram/Levels Interface.  They are no longer necessary now that the much easier to use menu command replacements are available.
  33. -- Documentation updates.
  34. -- Resampling of the clips used to occur on the original opened-from-disk form of the clip.  It now occurs on the modified form and makes the modified form the original form after resampling is completed.  This means any operations become permanant and should be turned off prior to resampling if you don't want this, including dark frame subtraction, flat field division, normalization, median filtering, and alignment.  In particular, this applies to deBayering as well, but deBayering must be done before resampling, as it will not work properly after resampling.
  35. -- Increased the maximum slider value for the Mask Intensity sliders in the Unsharp Masking and Laplacian Sharpening Interfaces.
  36.  
  37. 4.1
  38. 040215
  39. Bug Fixes:
  40. -- On some systems window dragging would not work properly.  Should be solved now.
  41. -- The Create Hot Pixel Mask Interface still listed the available radii as 0, 1, and 2, not reflecting the change in v4.0 to accept radius 3 as well.  This was a cosmetic problem with the dialog, but might have been confusing.  It is fixed now.
  42. -- The Transform Stack submenu was not always enabled and disabled at the proper times.  Should be fixed.
  43. -- Any stack that was transformed with the new commands for rotation or binning would not be saved at the proper dimensions.  Problem solved.
  44. -- Half bug, half missing feature in some cases, the Marking Clip Rect (cyan border around a clip) often was not drawn for many operations.  It has never been very important, so it took me this long to clean it up and get it working properly.
  45. -- Fixed a pretty serious bug that occurred whenever the user attempts to stop a stacking operation before it is complete.  Not sure how far back this problem went as it is not something I try to do very often.
  46. -- If a FITS file was opened when a Frame Stack already existed and the existing Frame Stack did not match the new FITS file's dimentions, the program could crash.  Should be fixed now.
  47. -- After deleting the Frame Stack, the Stack All Frames menu command would be enabled even if the workspace was empty.  Should be fixed now.
  48. -- People were reporting crashes in the Laplacian Sharpening interface in v4.0.  I was unable to replicate this bug.  However, I made numerous changes to Laplacian Sharpening in this version.  Perhaps the bug will simply go away in this version.
  49. -- When using the space bar to view the Reference Frame, the program would crash as you released the space bar if there were no frames selected and the mouse was not positioned over a clip.  Hopefully solved.
  50.  
  51. Changes:
  52. -- Added user-adjustable percentage cutoffs to the Auto Levels command in the Histograms/Levels Interface.
  53. -- Added "visible channel" controls to the Histograms/Levels Interface.  Toggle the checkboxes next to the corresponding histograms to turn the red, green, and blue channels on and off.  If only one channel is selected, the image will be drawn grayscale.
  54. -- Preview rects should update a little faster, especially with larger images.
  55. -- A number of changes should make the Laplacian Sharpening Interface respond to the sliders and changing the preview rect considerably faster (basically realtime on small preview rects).
  56. -- The sliders in the Unsharp Mask (intensity only, not blur radius) and Laplacian Interfaces now provide live "real-time" feedback as fast as possible while they are being dragged back and forth.
  57. -- Internal code change from unsigned longs to longs for storing the stack.  Although it halves the max dynamic range (from 2^32 to 2^31), it is still more than sufficient, and allows optimization of sharpening algorithms, which require negative values.
  58. -- When the Reset button is clicked in the Laplacian Sharpening interface the pin-to-one and pin-to-zero checkboxes are now all unchecked.
  59. -- When you move a slider in the Laplacian Sharpening dialog its corresponding pin-to-one and pin-to-zero checkboxes are now unchecked.
  60. -- A number of other operations that require updates to the Frame Stack or to a preview inside it should be slightly faster.
  61. -- Minor cosmetic changes in some dialog boxes.
  62. -- Similiar to the FITS file format, the Frame Stack can now be saved as a 16 or 32 bit Raw image.  The main advantage of the Raw image format is that it can be opened by other programs such as Photoshop for subsequent processing at 16 bits per channel in those programs.  Additionally, the interface for saving Raw images is much easier to use than the interface for saving FITS files.  There really isn't much reason to use FITS files anymore unless you need the FITS format for some other kind of external processing.
  63. -- Raw images can now be opened back into the stack.  If you have previously been savings stacks as FITS files for the purpose of reopening them in this program for 32 bit processing, you might consider using the Raw format instead since the user interface for managing Raw files is much easier to use.  Note that opening noninterleaved Raw files is quite a bit faster that opening interleaved files, at least in this version.
  64. -- Internal code change in Open FITS interface to use the recent auto dynamic range utility.
  65. -- Added a new operation on the Frame Stack called Star Beautification.  This operation both derings and debloats stars.  It has a number of controls however, so read the documentation.
  66. -- Added Auto Value Levels to the Histrograms/Levels interface.  This is similar to autocontrast in other programs in that it preserves color balance unlike Auto Levels which optimizes each channel separately.
  67.  
  68. 4.0
  69. 040117
  70. Bug Fixes:
  71. -- The lethal bug associated with radius 2 hot pixel masks was not entirely eliminated.  Hopefully it is this time.
  72. -- Fixed a bug associated with hot pixel masks of radius greater than zero which prevented hot pixel holes from being eliminated as well as was theoretically possible.  Hot pixel hole removal using a hot pixel mask should be much more effective now.
  73. -- Fixed a minor bug in which the histograms were calculated from the original instead of the result in the Unsharp Masking and Laplacian Sharpening interfaces whenever the histogram bounds rect was redefined.
  74. -- Fixed a minor bug in which a workspace file was not properly closed after reading it in.
  75. -- In some parts of the program (histograms, fourier/wavelet stuff, normalization, value sorting) the value component of an HSV color was calculated incorrectly, using the average of the RGB components instead of the max.  This has been corrected.  The fix should affect the appearance of histograms, image sorting using fourier transform or wavelets, and the behavior of normalizaion, and sorting by value and by value range.
  76. -- The Dark Frame and Flat Field Frame Windows wouldn't properly redraw after opening a workspace.  Problem solved.
  77. -- Made the Cancel button in the Normalization the default cancel item (should respond to esc and command-period now).
  78. -- Fixed a very minor bug in which the Frame Inspector Window did not always update after Normalization.
  79. -- The documentation did not reflect the recently added Save Workspace option under the File Menu.  Now it does.
  80. -- Minor code fix to Daubechies wavelet synthesis.  Since the program only uses wavelet analysis and not synthesis (so far) this bug fix doesn't affect any part of the program's external behavior.
  81. -- Previously, when a dialog interface was open for one of the operations, you could actually open another interface for a different operation simply by choosing it from the Operations menu.  The menu is now disabled during relevant operations.
  82.  
  83. Changes:
  84. -- Added star de-ringing to the Unsharp Masking and Laplacian Sharpening interfaces.  Specify a value cutoff in the resulting image, below which any pixels that would otherwise receive negative mask values will be left alone (same as in the original image), preventing such pixels from being darkened by the sharpening process.  See the documentation for a detailed explanation.
  85. -- Extended the max possible hot mask pixel radius from 2 to 3.
  86. -- Added the Alignment Brightness Threshold and the Hot Pixel Mask to the saved workspace, so that after saving and opening a workspace, these two parameters are preserved.
  87. -- Slightly changed the appearance of the Save Workspace dialog.
  88. -- Added a Dump Workspace command under the File menu.  This is similar to Save Workspace except that the workspace clips are saved as individual PICT files instead of a single conglomerated workspace file.  While these saved images can easily be opened back into the program if you wish, you will have lost the ability to undo previous alignments, normalizations, dark frame subtractions, or flat field divisions, (or the newly added median filter as well), in addition to losing the dark frame, the flat field frame, the alignment brightness threshold, and the hot pixel mask.  This feature is only useful if you want to get access to the modified clip images for external use.  If you intend to reopen a workspace in Keith's Image Stacker to continue working on a set of images, use the Save Workspace command instead.
  89. -- Changed the way the values slider (black histogram) works in the Histograms/Levels interface. The alteration is subtle however.  Most users probably won't notice a difference.
  90. -- When saving the workspace you can now specify whether or not to losslessly compress the workspace data in the workspace file.  It is important to realize that this compression is not always the best option.  Due to its overhead it can actually create a larger file than not using compression.  The dialog will show you the size of the file in either format so you can choose the smaller of the two methods.  Also, you may simply decide to prefer the uncompressed method even if it is larger because it takes slightly less time to save and open than the compressed format.  The compression method is simply the MacOS Picture record, same one used in PICT files.
  91. -- The new workspace file format is not compatible with version 3.5.  If you attempt to open a workspace saved with version 3.5 an appropriate error will appear.
  92. -- Some minor changes that might make alignments a tad bit faster.
  93. -- The normalization factor of a frame is now written in the Frame Inspector Window.
  94. -- Added median filtering on the individual frames with a brightness threshold (only pixels below the threshold are filtered).  This operation serves to reduce or eliminate hot pixel holes, and thus is redundant with the Hot Pixel Mask operation.  I strongly believe the Hot Pixel Mask is more justified in terms of how it attempts to solve this problem.  However, it does not always succeed in completely removing hot pixel holes.  The new median filter method is useful as a backup in such situations.  Be aware that specifying a high threshold, such that a large number of pixels are filtered, will dramatically slow down other operations such as alignment, cropping, resampling, normalization, and toggling darkframe subtraction and flatfield division.  Therefore, this operation should be performed last, just prior to stacking, if you choose to use it at all.
  95. -- Added the new median filter radius and threshold to the workspace file format.
  96. -- Various changes to the documentation.
  97. -- Minor changes in the appearance of the Commands and Hints windows.
  98. -- Added a progress bar while saving a workspace.
  99. -- Minor modification to the progress bar while opening a workspace.
  100. -- Minor internal code changes that might speed up Laplacian Sharpening slightly.
  101. -- Made the file saving dialog boxes (for saving stacks and workspaces) draggable and resizable.
  102. -- Internal code change in wavelet section from floats to long doubles.  Probably won't affect program operation.
  103. -- When adding a movie to an existing workspace (meaning you already have frames open in the workspace), in the case that the movie dimensions don't match the frame dimensions the previous behavior was for the program to put up a warning and then squeeze the new movie frames into the existing dimensions.  Now, the open movie dialog forces you to use a cropping rectangle that matches the present frame dimensions.  This makes it possible to add a new movie to an existing working space, which was basically impossible before.
  104. -- Added a new operation on the stack, wavelet shrinkage denoising using a steerable pyramid with four oriented filters.  When you run the command you will get a dialog interface that lets you specify a preview area and a wavelet coefficient threshold.  The preview area is useful because the calculation is somewhat time-consuming and will only be tested in the specifed preview area to speed things up.  Once the dialog is closed the chosen threshold will be applied to the entire image.  The pyramid decomposition attempts to create a four-level pyramid, but can only do so when the preview area is large enough on both dimensions.  Depending on the preview area chosen, the maximum possible number of levels (up to four) will be displayed in the dialog.  This is the number of levels that are used in the preview area.  The number of levels used for the final image will be greater than the number for the preview area if the image is large enough to accomodate more levels than the preview area.  If you want the most accurate preview, make the preview area large enough to use all four possible levels.  The only cost is that this makes the threshold slider respond slower because the preview area is larger and the decomposition is using more levels.  See the documentation for more information.
  105. -- The stack can now be rotated 90, 180, or 270 degrees, and flipped horizontal or vertical.
  106. -- The histogram bounds rect in the Unsharp Mask and Laplacian Sharpening dialogs now acts as a preview bounds as well, allowing faster updates while you attempt to find the best settings.
  107. -- In previous versions, operations that added information (made pixels brighter), such as Unsharp Mask and Laplacian Sharpening, ran the risk of overloading the image (oversaturating parts of the image).  This was never really problem with stack itself, which has a 32-bit-per-pixel-component dynamic range which can easily contain any realistic addition of information, but rather stemmed from the manner in which the stack was projected into an 8-bit-per-pixel-component image for display on the screen and/or saving to a file.  This problem has been solved by having the stack always be projected into the screen and file images such that the brightest pixel is not overloaded.  This means that you can use the sharpening interfaces with utter impunity now, without fear of overloading the image.  However, it also means that as you add information with these operations, the image may become darker in order to accomodate the increased dynamic range (since 32-bit stack values are then being projected into darker 8-bit screen values so that the brightest stack values don't project into a screen value greater than 255).  Subsequent level adjustment can fix this.
  108. -- You can now resample the stack using four to one or nine to one binning (under the Operations Menu under Transform).  This makes the image one half or one third its present size by summing 2x2 or 3x3 pixel blocks into a single pixel.  This automatically increases the dynamic range of the image by a factor of 4 or 9.  You can perform these commands multiple times of course to get an even smaller final image if you wish.  If the original dimensions of the image are not a perfect multiple of 2 or 3 (2 for 4 to 1 binning and 3 for 9 to 1 binning), then the remaining rows and/or columns of pixels on the right and bottom edges will be trimmed away.
  109. -- You can now rotate and flip the stack (under the Operations Menu under Transform).
  110. -- Very minor changes to some menu item labels.
  111. -- Added a progress bar while initializing the Laplacian Sharpening dialog.
  112. -- Made some pretty severe changes to the way histograms are displayed.  First of all, any histogram bin that has any values at all in it will be drawn with at least one pixel height.  In the past, bins that fell below 0 after scaling were not drawn at all.  Second, histograms are always drawn normalized so that the most prominent bin perfectly fills the height of the histogram, instead of saturating off the top as they used to do in the past.  Third, the options for scaling histograms no longer specify linear scalings of all values, but rather specify the mapping function from histogram bin values to drawn values in power scalings, the three available settings corresponding to x^0 (linear), X^4 and X^16.
  113. -- Reorganized the File menu.
  114. -- Made a slight change to the appearance of the Normalize dialog.
  115. -- Internal code change stores the stack-to-screen divisor (gNumImagesInStack) as a double instead of the old int in order to allow smooth divisor transitions by the new auto-dynamic range maintainance feature.  Required similar int-to-double conversions in Histogram/Levels interface, Levels Sliders, and Histogram Remapping functions.
  116.  
  117. 3.5
  118. 031225
  119. Bug Fixes:
  120. -- Cropping a movie as it is opened (in the Open Movie dialog) used to offset the Operation Bounds Rect in undesirable ways if the movie dimensions weren't 640x480.  This bug has been around for a very long time apparantly, but I never noticed it because I never tried processing movies that weren't 640x480.  Anyway, it's fixed now.
  121. -- The Flat Frame wasn't properly deleted if the Clips Window was closed.
  122. -- Fixed a memory leak in which the hot pixel mask was not being deleted.
  123.  
  124. Changes:
  125. -- In the Open Movie Dialog, you can now accept and reject individual frames by tapping the 'A' and 'R' keys.
  126. -- You can now save the entire working space to disk.  This takes up a lot of disk space, but it tells you how much space it needs before proceeding with the operation.
  127. -- Moved the default position of the main window slightly.
  128. -- Made some small changes to the TEMP file type file icon.
  129.  
  130. 3.4
  131. 030912
  132. Bug fixes:
  133. -- There was a lethal bug in the new hot pixel mask command which rendered it totally nonfunctional.  Fixed.
  134. -- There was a lethal bug in the new hot pixel mask dialog which would crash the program if the radius was set to 2.  Fixed.
  135. -- Apparantly, I never properly fixed the bug associated with alignments, cropping, and darkframe subtraction.  It appears to be fixed now...hopefully.  Oog.
  136.  
  137. Changes:
  138. -- In the hot pixel mask dialog the initial value is now 256 instead of 0, which makes more sense since 256 is the default behavior if you never make a hot pixel mask in the first place.
  139. -- Added an adjustable histogram bounds rectangle to the Laplacian Sharpening dialog.  This acts the same way as in the Histogram/Levels dialog, letting you see which parts of the image are being saturated by the sharpening process.
  140. -- Added an adjustable histogram bounds rectangle to the Unsharp Mask dialog.  This acts the same way as in the Histogram/Levels dialog, letting you see which parts of the image are being saturated by the sharpening process.
  141. -- v3.0 introduced the ability to launch the program by drag-dropping files onto the application icon, but the files wouldn't subsequently be opened.  This has been significantly improved.  You can now drag-drop any selected set of image files onto the application icon and the application will launch if necessary and open all the files into the workspace, assuming their dimensions match.  This still doesn't work with movie files yet though.
  142. -- Added separate channel auto-alignment.  It is now possible to auto-align the RGB channels independently.  You can do this simply by toggling the corresponding menu item.  Instead of aligning by the difference of the the values of each pixel, the red, green, and blue channels can be aligned by difference only within their channel.  Be aware that this method of auto-aligning is three times slower than aligning the channels together since, for each frame, each channel must be individually aligned in the normal manner.
  143. -- The alignment for each channel is now written in the lower-left corner of the Frame Inspector Window in the order red, green, blue from top to bottom.
  144. -- Added separate channel nudge-alignment.  If the corresponding menu item is set to align the channels separately, hold down the '1', '2', or '3' key and use the arrow keys to nudge the red, green, or blue channel in single pixel increments.
  145. -- Added separate channel nudge-alignment to the FrameStack.  If the FrameStack Window is in the foreground, hold down the '1', '2', or '3' key and use the arrow keys to nudge the red, green, or blue channel of the FrameStack in single pixel increments.
  146. -- Added some example images to the documentation.
  147.  
  148. 3.3
  149. 030731
  150. Bug fixes:
  151. -- In OS 9, any temp files that were pushed off to disk would come back corrupted and converted to black and white.  This bug has probably been present since version 3.0 but I never noticed it since I never use the program in OS 9.  The bug is now eliminated.  This shouldn't affect how the program runs in OS X at all.
  152.  
  153. Changes:
  154. -- Previously, when opening individual images, if you filled the memory the program stopped loading images, and even crashed to some degree.  Now it pushes the images off to disk.  This only matters in OS 9 since the entire image-disk buffering doesn't occur in OS X due to OS X's own memory management system.
  155. -- It is now possible to set a brightness threshold for difference alignment.  The command is under the Operations Menu.  This will bring up a dialog where you can adjust a brightness threshold from 0 to 256 that determines which pixels should be used for alignment.  By excluding dim pixels and only using bright pixels, you can eliminate skyglow from the alignment algorithm, which is often characterized by fine diagonal lines in the raw images.  In the past, these fine lines would be hilited by the alignment and would show up in the stack.  By excluding those pixels they don't count toward the alignment and are eliminated.  More to the point, by only aligning on the object in question, instead of noise in the image, you get a more precise alignment which will produce a sharper stack.
  156. -- It is now possible to define a hot pixel mask for use with stacking.  This provides a solution to the problem of black holes and dark streaks in the stack that otherwise result from subtracted hot pixel holes in the individual frames.  The command is under the Operations Menu.  This will bring up a dialog where you can adjust a threshold for detecting hot pixels either in an individual frame or the dark frame (dark frames will work better).  The mask determines which pixels should be used for stacking.  If you stack several frames with varying alignments, every pixel in the stack will get some information from some of the frames.  If the alignments are not sufficiently diverse however, you will see black holes in the stack where no information could be provided by any raw frame for a particular pixel location.
  157.  
  158. 3.2
  159. 030512
  160. Bug fixes:
  161. none
  162.  
  163. Changes:
  164. -- When growing a window with the grow box in the lower right corner of the window, the max possible dimension is now 4000x3000.
  165. -- The Frame Inspector Window, Dark Frame Window, and Flat Field Frame Window default to proportion-constrained max dimensions of 640 horizontal and 480 vertical when opening an image that is larger than 640x480 on either axis.
  166. -- If the image dimensions are less than 640x480 on both axes the zoom box in the title bar works as before, sizing the window to match the image perfectly, whether it's the Frame Inspector Window for the frames, the Dark Frame Window for the darkframe, or the Flat Field Frame Window for the flat field frame.  However, if the dimensions of the image are greater than 640x480 the zoom box toggles back and forth between matching the window dimensions to the image dimensions and matching the window dimensions to a proportion-contrained max of 640 horizontal and 480 vertical.
  167. -- Added a custom cross hair cursor that shows up on both light and dark backgrounds and has an empty center so you can see the actual pixel you're studying.
  168. -- The lower right corner of the Clips Window is now painted black instead of white whenever the clips don't fully fill the window.
  169.  
  170. 3.1
  171. 030424
  172. Bug fixes:
  173. -- The Apple Menu Item list would be repeated twice in the Apple Menu under OS 9 and below.  I suspect this problem has been present since version 1.5, which was the conversion to Carbon.  I never noticed it before because I rarely run the program under OS 9.  Anyway, the problem is fixed.
  174.  
  175. Changes:
  176. -- You now have the option of saving the FrameStack either as an 8-bit-per-pixel-component PICT (as in previous versions) or as three 16 or 32-bit-per-pixel-component FITS files, one file for each RGB channel.  The FITS depth, 16 or 32, is set automatically based on whether 16 bits is sufficient (max pixel component value <= 65535).  The file I/O for the FITS files is pretty ugly.  The files will appear in the same directory as Keith's Image Stacker.  You don't have a choice about this at the present time.  I am working on improving the interface.
  177. -- Whenever the workspace is empty (the Clips Window isn't visible), you have the option of opening a FITS file straight into the FrameStack for level adjustment, blurring, or sharpening (all at 96 bits per pixel of course, that's the point).  You can bring in different FITS files for the different channels if you want.  However, you cannot bring FITS files into the workspace for stacking yet.  I'm still working on that.  The FITS file I/O is similar to the FITS saving interface mentioned above in that any FITS files that are opened must be in the same directory as Keith's Image Stacker.  Note, it may be more efficient to copy the application into a directory containing FITS files than to do the opposite since the application may be smaller than the FITS files or you may not want to have to copy the FITS files back and forth after saving them back to disk.
  178. -- The FrameStack Window now has a close box so you can throw away the FrameStack anytime you want.  This is especially useful with the new FITS routines since there would otherwise be no way to get rid of the FrameStack except to actually open an image into the workspace (which automatically throws away the FrameStack).
  179. -- Added a warning when opening images that don't match the dimensions of the present workspace or FrameStack.
  180.  
  181. 3.0
  182. 030417
  183. Bug fixes:
  184. -- There was another way to crash the program when deleting frames.  Problem solved.
  185. -- When selecting clips in a resized Clips Window, sometimes the wrong clips would get selected.  Problem solved.
  186. -- Fixed a very uncommon bug.  Hitting '3' would enable autoalignment but releasing '3' wouldn't turn it off.  This behavior almost never occurs in normal usage however, since one rarely hits and releases '3' without meaning to align, and the alignment automatically turns itself off afterwards.  Oh well.
  187. -- Sort of a bug, sort of a side-effect feature resulting from the new faster blurring algorithm: The gaussian blur algorithm was being considerably quantized at the integer radius boundries.  This behavior has been drastically reduced.  Should effect the Gaussian Blur, Unsharp Mask, and the new Laplacian Sharpening commands.
  188. -- Removed a small memory leak that occurred when resampling after opening a dark frame.
  189.  
  190. Changes:
  191. -- You can now open many image formats including PICT, JPEG, JFIF, BMP, PNG, GIF, some kinds of Photoshop, SGI images, MacPaint, Quicktime, and theoretically TIFF and TGA although those two don't seem to work very well.
  192. -- The Gaussian Blur Slider and the Mask Intensity Slider are now truncated to the tenths digit (effects Gaussian Blur, Unsharp Mask, and Laplacian Sharp operations).
  193. -- Using arrows to nudge the Gaussian Blur Slider and the Mask Intensity Slider moves in .1 increments instead of multiplying by 1.25 or .8 as before (or 1.0 by holding down shift).
  194. -- Added a new image sharpening operation called Laplacian Sharpening.  This acts like a series of Unsharp Masks at several different blur sizes all at once.  It takes some practice to use well, so mess around with it, experiment with how the different sliders alter the final result.  This is generally a preferable method to the basic Unsharp Mask operation, as it will provide you with better control over the sharpening behavior.
  195. -- The Frame Inspector Window is now painted black instead of white when it is blank.
  196. -- The Gaussian Blur and Unsharp Mask Dialogs (and the new Laplacian Sharpening Dialog) remember their settings after you close them now.
  197. -- The Mask Intensity Slider now goes to 40, not 20 as before.
  198. -- Added Flat Field division.
  199. -- Converted the FrameStack to 32 bits per channel.  As a result, level adjustment is no longer split between the Sum/Stack interface and the Level Adjustment interface.  This means that a SumStack operation no longer requires a dialog box or interface at all.  Instead, the SumStack operation produces a 32 bit per channel image which is drawn in the FrameStack Window (at 8 bits per channel since the screen can't handle anymore than that).  You can do all of the necessary level adjustment in the Level Adjustment dialog now.  The histogram sliders in the Level Adjustment Dialog will now show the numerical value according to the full dynamic range instead of 255, which is 255 times the depth of the stack.  By luck, this also sped up the level remapping algorithm slightly, especially when operating on the values histogram.
  200. -- When nudging a slider with the arrow keys, you can make large jumps by holding down shift.
  201. -- The Working Dialog no longer appears while remapping the histograms during level adjustment.
  202. -- The value remapping algorithm used during level adjustment has been sped up considerably.
  203. -- In the Level Adjustment dialog, the "value" slider is now distinct from the red, green, and blue sliders.  If you change the value slider, the rgb sliders will be reset and vs/va.
  204. -- In the Level Adjustment dialog, if you move a slider around but put it back where it started before lifting the mouse button, or if you just click on a slider without moving it, the levels won't actually get remapped (which would be pointless and wasteful).
  205. -- The Working Dialog no longer appears while a gaussian blur operation is working.  This also means that while the arrow keys (with or without shift) still move the blur sliders, they can't override a presently working blur operation.  I'm still trying to design a workaround.
  206. -- Completely removed median-stacking, since tests have demonstrated that it consistently performs worse than mean-stacking.  Besides, mean-stacking increases the dynamic range linearly with the number of images stacked, while median-stacking does not.
  207. -- Removed the commands for darkframe subtraction and equalization on the stacked image.  They were pointless.
  208. -- Added thorough documentation.
  209. -- Made a small change to the resampling routine which might speed it up a little bit.
  210. -- Changed the name of the bilinear and bicubic resampling routines in the resampling menu since the methods I use aren't truly bilinear or bicubic at all.
  211. -- Added proper handling of and response to the Quit AppleEvent.
  212. -- In OS X the program no longer lists Quit in the File menu, only in the Program menu.
  213. -- Started working on the ability to launch the program by dragging and dropping an image or movie file onto the program's icon in the Finder.  This isn't fully working yet though.
  214.  
  215. 2.0
  216. 030226
  217. Bug fixes:
  218. -- Deleting the last frame in the Clips Window would crash the program.  Not anymore.
  219. -- The unsharp masking algorithm was never really correct before, rendering it pretty useless compared to Photoshop.  Well, now it works perfectly, and for reasons stated in the Changes section below, it is actually more helpful that Photoshop's unsharp mask now (and produces better results than Photoshop's too.  Hey hey!).
  220. -- Fixed a small bug in the Gaussian Blur Dialog.  The result used to be displayed too far to the right.  Now it isn't.  (irrelevant though given the complete overall of the dialog mentioned below).
  221. -- Fixed some minor bugs involving the Working Dialog's maximum range throughout the program.
  222. -- Finally got the dialogs to update cleanly.
  223.  
  224. Changes:
  225. -- The SumStack Window and the sum/stack image are now referred to more generally as FrameStacks to encompass the new MedianStacking option, mentioned below.
  226. -- When performing a mean-based sum/stack, a gaussian blur, an unsharp mask, or level adjustment the present FrameStack is shown full size in the FrameStack Window.
  227. -- Added separate sum divider sliders for red, green, and blue when performing a mean-based sum/stack (adjusting the value slider will force the red, green, and blue sliders to match the value slider).
  228. -- Added subtracter sliders when performing a mean-based sum/stack.  This allows you to maximize the dynamic range of the portion of the image that you are interested in.  The previous version would need for you to cut off the divider when the max value is saturated.  Now you can subtract a baseline from all the values, pulling the values down and pushing the saturation point up.  This allows you to use a lower divider before the dynamic range reaches out of the available pixel value range.
  229. -- Added a new sorting method, Sort by Value Range, which sorts by the maximum spread in pixel values (difference between the brightest and the darkest pixels in the Operations Bounds Rectangle).  Frankly, it doesn't work as well as I had hoped it would.
  230. -- Some internal code changes that don't effect program behavior (CalculateDifference()).
  231. -- Changed the Working Dialog so it uses the fancy system-style progress bar.
  232. -- You can now drag the Working Dialog around on the screen.
  233. -- When opening a movie, if you select Accept All Remaining, the frames will be shown in the Open Movie Dialog at a user-specified interval (longer intervals will open more quickly).
  234. -- Added centroid auto-alignment (hold down '4' while clicking on a frame clip).  It only produces a course alignment, so you should always follow it with a difference alignment using '1', '2', or '3'.  It's not much faster than difference alignment so I'm not sure it serves a purpose.
  235. -- Changed the image differencing algorithm.  This provided a factor of 2 speedup in alignments alone.
  236. -- Made some pretty heavy modifications to the way the difference-alignment algorithms work (the '1', '2', and '3' keys).  It should provide a major speed up now.  NOTE, you should only use '3' for very minor alignments (a few pixels).  '2' and especially '1' will handle medium and larger alignments much much faster than '3'.
  237. -- When a frame isn't included in the frame-stack, the X in the Frame Inspector Window is small and in one corner now.
  238. -- When arrow nudging, you can hold down any combination of shift, option, and control to increase the size of the jump (each modifier key added makes the jump bigger, doesn't matter which).
  239. -- Not a code change, but I started compiling with the maximum optimizations enabled.  It should provide performance increases across the board.
  240. -- Added Spectrum Distribution sorting.  Sorts images by the fraction of the power in their frequency spectrums that reside in the higher frequencies (which scores blurry images very low).  This can be done using the Fourier Transform, the Le Gall 5/3 wavelet, or the Daubechies 9/7 wavelet.  Note that this command requires a power-of-2 square bounds rectangle.
  241. -- Added power-of-2 square bounds rectangle.  To get such a bounds rectangle in the Frame Inspector Window, hold down 'control' when clicking and/or dragging in the Frame Inspector Window.  This feature is required for the Spectrum Distribution sorting command.  There is also a new submenu to specify the size of this rectangle: 32, 64, 128, or 256 pixels.
  242. -- Many of the sliders in the various windows can be controlled with the arrow keys now.  The slider under arrow key control is always the last slider you touched with the mouse.
  243. -- Changed the appearance of the sliders in the mean-based sum/stack interface.
  244. -- Added median-based stacking (the original kind is obviously mean-based stacking, or averaging).
  245. -- Sped up the gaussian blur algorithm (will affect both the Gaussian Blur and Unsharp Mask commands).
  246. -- The Gaussian Blur and Unsharp Mask Dialogs are quite different now.  As stated above, the result is shown full size in the FrameStack Window, but in addition to that you can see the histogram of the result to help detect clipping, and you can toggle the preview on and off.
  247. -- The Level Adjustment Dialog has a Preview toggable checkbox now.
  248. -- Changed the size of the histograms in the Level Adjustment Dialog to fit things on the screen better.
  249. -- Underlying code changes to the way frames are cropped as a movie is opened.  Should be a little faster.
  250. -- Internal code changes (clip/mouse interaction).
  251. -- The Clips Window can now be dragged to an arbitrary shape with the grow box in the lower right corner of the window.  The zoom box in the title bar now fits the the window to the clips rather than iterating through three static sizes as it previously did.  It only extends the window vertically though, not horizontally, so make the window as wide as you want it, then use the zoom button to automatically fit the vertical size of the window to the number of clips.
  252. -- Added Auto Levels and Reset Levels to the Histogram/Level adjustment dialog.  Auto Levels performs no saturation whatsoever, creating a cutoff at the brightest pixel, unlike Photoshop which often saturates bright pixels in Auto Levels.  Yuck.
  253. -- Added frame normalization (hit 'n' or 'N' while over a single clip or after making a selection).  This allows you to set all the frames' maximum values or average values to a user-specified value.  This is particularly useful prior to sorting by spectrum distribution, although I suspect it may also help sorting by difference and value-range as well.
  254. -- Made the About Box a little cooler.
  255.  
  256. 1.5
  257. 021013
  258. Bug fixes:
  259. -- The program was crashing if a movie was opened into an empty workspace but then closed without accepting any frames from the movie.  Problem solved.
  260.  
  261. Changes:
  262. -- Added 4 to 1 binning.  This reduces the image size to half by binning squares of 4 pixels 2x2 into a single pixel.  Unlike the other resampling methods, binning doesn't work on the "original" frame prior to alignment and darkframe subtraction.  It works on the modified frame after alignment and darkframe subtraction.  Consequently, the darkframe status of every frame is set to false after binning and the alignment can't be removed.
  263. -- Carbonized the program so it runs native under OS X (and still runs under previous OS versions as well).
  264.  
  265. 1.1
  266. 020520
  267. Bug fixes:
  268. -- When adding a pict to the workspace, it's clip wouldn't get created so its space would be blank in the Clips Window.  This problem is now fixed.
  269. -- Fixed a sporadic bug associated with adding pict files to the workspace.
  270. -- Fixed a very serious bug associated with darkframe subtraction, alignment, and cropped images.  Basically, previously, if you cropped images in the workspace that had been aligned, the darkframe no longer lined up properly with the images.  Now it does.
  271.  
  272. Changes:
  273. -- The histogram remapping in the Histogram/Levels window runs a little faster on average, plus it runs much faster anytime the Value controls are left at the ends (dark cutoff = 0, light cutoff = 255, gamma = 1.0).
  274. -- Some internal code changes that don't effect program behavior (TranslateImage()).
  275. -- Can sort by saturation, value, and single pixel edge sharpness now.
  276. -- Further autoalignment refinements.  You can autoalign on the whole window (which can actually be the fastest method for smaller images), or you can autoalignment within 10 pixels or within 5 pixels on point sources (like stars) or within 50 pixels or within 25 pixels on fatter objects (like planets).  The reason for this discrepancy is that with fatter objects the alignment can follow the object around to find the optimal overlap, but with a very small object it is too hard to get the objects to overlap, therefore no following can occur and only the immediately available alignment window can be used, which is either 10 pixels or 5 pixels away (radius) in either direction.
  277. -- When adding pict files to the workspace you can now do multiple file selections and open several files at once.
  278. -- When opening a movie, if the workspace is presently empty (you haven't already brought in previous movies or pict files) you many drag and define a cropping rectangle in the Open Movie Dialog.  You can only do this before accepting any frames.  This can save time by avoiding caching many images to disk and cropping them later.
  279. -- Added gamma controls to the Histograms/Levels window.
  280.  
  281. 1.0.4
  282. 020315
  283. Bug fixes:
  284. none
  285.  
  286. Changes:
  287. - To speed up autoalignment you can now choose between a slower, more thorough method that checks all alignments over the entire window, or a faster method that will assume the frame in question is already pretty close the right position (within 30 pixels in either direction on either axis).
  288. - You can remove the alignment on a single frame instead of having to remove alignments on all frames.
  289. - You can open an arbitrary number of frames.  As the program runs out of memory it will create temp files on disk to store some of the frames.  The program will run faster with a higher memory to frame ratio since it will have to access disk files less frequently.  If a frame is presently stored on disk, an 'X' will appear over its clip in the Clips Window to let you know that accessing that image for various operations will require a little extra time.  If an image is presently stored on disk, the view in the Frame inspector Window will simply be a blown up image of the clip (it will be very low resolution and blocky looking).
  290.  
  291. 1.0.3
  292. 020304
  293. Bug fixes:
  294. - The operations bound rect didn't used to be clipped to the Frame Inspector Window (you could define it outside the window's rectangle by dragging past the edge of the window.  This bug is now fixed.
  295. - The value histogram was really just another copy of the blue histogram, unnoticed by me in my testing.  This bug is fixed.  The value histogram is now a value histogram, as it certainly ought to be.
  296. - If you select all and there is only one image in the workspace, it now immediately appears in the Frame Inspector Window, which it should since the Frame Inspector Window should always have an image in it if there is only one image selected.
  297. - Fixed a serious cropping bug that occurred if you translated (aligned) an image prior to cropping.  Incidentally, cropping removes all alignments.  It doesn't undo alignments however.  All images are cropped to the view within the bounds rectangle, but you can not subsequently remove the alignment for example.  The cropped image becomes the zero-alignment image.
  298.  
  299. Changes:
  300. - You can crop all the images in the workspace.  You can't crop them individually though, since all the images must have the same dimensions.  You can only crop all the images at once to the bounds rectangle you define in the Frame Inspector Window.  Obviously, this works best if you align all the frames first so the images in each individual frame don't get clipped.  Be aware that after cropping you have redefined the image dimensions (obviously) and any new movies or pictures that are added will be contorted to fit into those dimensions.
  301. - Resampling .25X, .5X, 2X, 3X, 4X nearest neighbor and variants on bilinear and bicubic.
  302. - Further improvements to the autoalignment performance.  It's a little slower, but much more robust to the initial position of the image.
  303.  
  304. 1.0.2
  305. 020303
  306. Bug fixes:
  307. - There was very serious bug associated with any movie other than the first movie opened (regardless of whether a new workspace was created).  This bug has been eliminated.
  308. - Fixed a serious but generally unnoticed bug in calculating image differences.
  309. - Fixed a very minor bug associated with the 'space-bar' command.
  310.  
  311. Changes:
  312. - You can specify the reference frame used for autoalignment and for sorting all frames by difference.  This frame is always frame 1, but you now you can choose which frame will be frame 1.  That frame and the original frame 1 will trade places in the workspace.
  313. - Fine-tuned autoalignment no longer exists.  It used to be a "one-pixel-speed-walk" searching for a minima in difference, but there are too many local minima for this to work very well, so I adopted a "zero-in" approach instead.  More info on this below.
  314. - Added full-image search autoalignment.  Basically, this means you don't have to do an approximate manual alignment before auto-aligning.  You can auto-align no matter how much difference there is between the images and it will first find an approximate alignment within the entire image's freedom of translation, and will then proceed to autoalign with incrementally finer adjustments until the optimal alignment is found.  This works spectacularly well.
  315. - Added a user-defined bounds rectangle when generating histograms in the Sum/Stack Dialog and the Histogram/Levels Dialog.
  316. - You can now sort all the images according to their difference within a user-defined bounding rectangle from the user-defined reference frame.  Obviously, this works better if you align all the frames first.
  317.  
  318. 1.0.1
  319. 020301
  320. Bug fixes:
  321. - Clips Window automatically updates when it is zoomed/unzoomed.
  322. - If you accept and reject frames one by one as a movie is opened, they no longer get scattered all over the Clips Window randomly.
  323. - The dialog box that notifies when the program has run out of memory actually works now.  It wouldn't appear before.
  324. - When you delete a clip from the Clips Window the Frame Inspector Window will automatically update.  It wouldn't before.
  325.  
  326. Changes:
  327. - There are now three possible dimensions for the Clips Window instead of two (cycle through them with the zoom button in the upper-right corner of the window.
  328.  
  329. 1.0
  330. 020301
  331. First public release
  332.